import https from 'https';

// API 配置
const API_BASE_URL = 'https://fast.huixiangwuyou.com'
const CREATE_COMMENT_URL = `${API_BASE_URL}/comments/create`
const LIST_COMMENTS_URL = `${API_BASE_URL}/comments/list`

// 测试数据
const testComment = {
  content: "这是一个测试留言，用于验证 API 连接。",
  author: "API测试用户"
}

// 发送 HTTP 请求的通用函数
function makeRequest(url, options = {}) {
  return new Promise((resolve, reject) => {
    const urlObj = new URL(url)
    
    const requestOptions = {
      hostname: urlObj.hostname,
      port: urlObj.port || 443,
      path: urlObj.pathname + urlObj.search,
      method: options.method || 'GET',
      headers: {
        'Content-Type': 'application/json',
        ...options.headers
      }
    }

    if (options.body) {
      requestOptions.headers['Content-Length'] = Buffer.byteLength(options.body)
    }

    const req = https.request(requestOptions, (res) => {
      let data = ''
      
      res.on('data', (chunk) => {
        data += chunk
      })
      
      res.on('end', () => {
        try {
          const jsonData = JSON.parse(data)
          resolve({
            status: res.statusCode,
            headers: res.headers,
            data: jsonData
          })
        } catch (error) {
          resolve({
            status: res.statusCode,
            headers: res.headers,
            data: data
          })
        }
      })
    })

    req.on('error', (error) => {
      reject(error)
    })

    if (options.body) {
      req.write(options.body)
    }
    
    req.end()
  })
}

// 测试获取留言列表
async function testListComments() {
  console.log('🔍 测试获取留言列表...')
  try {
    const response = await makeRequest(LIST_COMMENTS_URL, {
      method: 'POST',
      body: JSON.stringify({
        pageIndex: 1,
        pageSize: 10
      })
    })
    
    console.log(`✅ 获取留言列表成功 (状态码: ${response.status})`)
    console.log(`📊 响应数据:`, JSON.stringify(response.data, null, 2))
    
    // 检查分页信息
    if (response.data) {
      console.log(`📄 分页信息:`)
      console.log(`  - 当前页: ${response.data.pageIndex || 'N/A'}`)
      console.log(`  - 页大小: ${response.data.pageSize || 'N/A'}`)
      console.log(`  - 总条数: ${response.data.total || 'N/A'}`)
      console.log(`  - 总页数: ${response.data.totalPages || 'N/A'}`)
    }
    
    return response
  } catch (error) {
    console.error('❌ 获取留言列表失败:', error.message)
    return null
  }
}

// 测试创建留言
async function testCreateComment() {
  console.log('📝 测试创建留言...')
  try {
    const response = await makeRequest(CREATE_COMMENT_URL, {
      method: 'POST',
      body: JSON.stringify(testComment)
    })
    
    console.log(`✅ 创建留言成功 (状态码: ${response.status})`)
    console.log(`📊 响应数据:`, JSON.stringify(response.data, null, 2))
    
    return response
  } catch (error) {
    console.error('❌ 创建留言失败:', error.message)
    return null
  }
}

// 主测试函数
async function runTests() {
  console.log('🚀 开始测试外部 API 连接...')
  console.log(`🌐 API 基础 URL: ${API_BASE_URL}`)
  console.log('='.repeat(50))
  
  // 测试获取留言列表
  const listResult = await testListComments()
  console.log('')
  
  // 测试创建留言
  const createResult = await testCreateComment()
  console.log('')
  
  // 总结
  console.log('📋 测试总结:')
  console.log(`- 获取留言列表: ${listResult ? '✅ 成功' : '❌ 失败'}`)
  console.log(`- 创建留言: ${createResult ? '✅ 成功' : '❌ 失败'}`)
  
  if (listResult && createResult) {
    console.log('🎉 所有测试通过！外部 API 连接正常。')
  } else {
    console.log('⚠️  部分测试失败，请检查 API 配置和网络连接。')
  }
}

// 运行测试
runTests().catch(console.error) 